#打开文件,按行读取
with open('report')as f:
    o_list=[l.split() for l in f.readlines()]
#计算个人总分与平均分
for s_line in range(1,len(o_list)):#o_list=31
    total_score = 0
    for score in range(1,len(o_list[s_line])):#print(len(o_list[s_line]))=10为了获得几门科目,9们科目遍历9次
        #print(o_list[s_line])#每个人的姓名和成绩
        #print(float(o_list[s_line][score]))#所有的成绩
        total_score += float(o_list[s_line][score])
        #print(total_score)#从73开始一直加9次到660，然后进行下一次遍历从33一直加到617
    avg_score=float('%0.1f' %(total_score / (len(o_list[s_line])-1)))#获取每个人到平均分
    o_list[s_line].append(str(total_score))#在每个人到成绩后加上总分
    o_list[s_line].append(str(avg_score))#在每个人到成绩后加上平均分
#排名次
o_list.sort(key = lambda x:x[-1],reverse = True)# 按每项倒数第一个元素排序逆向排序即按平均分由高到底排序
#计算每门科目到总分与平均分
aver_line=[]
for subject in range(1,len(o_list[1])):#len(o_list[1])=12
    total_subject=0
    for student in range(1,len(o_list)):#30个学生，遍历30次
        total_subject += float(o_list[student][subject])
        #print(o_list[student][subject])#每门科目的成绩
    aver_subject = float('%.1f' % (total_subject / (len(o_list) - 1)))#计算科目平均分
    aver_line.append(str(aver_subject))
aver_line.insert(0, '0')
aver_line.insert(1,'平均')
o_list.insert(1,aver_line)#在原始列表中插入平均分列表，但是比之前的普通列表多了排名和平均
#添加名次，标记不及格
print(len(o_list))
for score_line in range(2,len(o_list)):#len(o_list)=32
    o_list[score_line].insert(0, str(score_line - 1))
    for score in range(2, (len(o_list[score_line]) - 2)):
        if float(o_list[score_line][score]) < 60:
            o_list[score_line][score] = '不及格'
#在之前的原始列表中添加名次总分平均分
o_list[0].insert(0,'名次')
o_list[0].append('总分')
o_list[0].append('平均分')
for line in o_list:
    print (' '.join(line))
#写入新文件
with open('newreport.txt','w') as f:
    for line in o_list:
        f.write('\t'.join(line) + '\n')












